package org.cashbook.core.objects.transaction;

import java.util.Date;
import java.util.Set;

import org.cashbook.core.objects.account.IAccount;
import org.cashbook.core.objects.category.ICategory;
import org.cashbook.core.objects.keyword.IKeyword;
import org.cashbook.core.objects.luxuryClass.ILuxuryClass;
import org.cashbook.entities.IUser;

public interface ITransaction {
	
	public Date getStartDate();
	
	public boolean setStartDate(Date startDate);
	
	public IAccount getAccount();
	
	public void setAccount(IAccount account);
	
	public ICategory getCategory();
	
	public void setCategory(ICategory category);
	
	public Set<IKeyword> getKeywords();
	
	public void setKeywords(Set<IKeyword> keywords);
	
	public void addKeyword(IKeyword keyword);
	
	public IUser getUser();
	
	public void setUser(IUser user);
	
	public ILuxuryClass getLuxuryClass();
	
	public void setLuxuryClass(ILuxuryClass luxuryClass);
	
	public double getAmount();
	
	public void setAmount(double amount);
	
	public boolean isRecurring();
	
	public Date getEndDate();
	
	public boolean setEndDate(Date endDate);
	
	public String getTransactionType();
	
	public int getTransactionID();
	
	public void setNextOccurence(ITransaction nextOccurence);
	
	public void setFirstOccurence(ITransaction firstOccurence);

}
